As electronic circuit designs continue to increase in speed and complexity, it becomes ever more critical to test the developing circuit designs at various stages of development. Hardware emulators provide a means to test complex circuit designs as the designs are being developed. Such emulators typically provide configurable hardware that is controlled by software to perform the functions of a circuit being designed. The circuit design is specified by a set of data that defines the circuit structure and behavior. The emulator is often connected to a "target system," which is the actual circuit with which the circuit design will eventually operate.
Emulators operate under software control. The circuit design is "compiled" to produce the program that controls the emulator. Because an emulator must perform the functionality of a wide range of circuit designs, it should be as flexible as possible. This means the emulation system must contain logic processing hardware that is reusable for different designs. Such an emulation system would contain a large number of general purpose processing elements that are used to indirectly perform the function of the circuit being emulated. For example, a general purpose emulator would process multiple Boolean logic equations to emulate a multiplier circuit rather than use a dedicated hardware multiplier for the same purpose that would then become unusable in the emulation of circuit designs that do not contain any multiplier functions. In order to solve these equations, many gates, or other devices, in the emulator must be provided with signals. Further, the outputs of the gates or other components must be routed efficiently among the various components of the emulator.
Conventional emulators are used to develop and test designs. To this end, it is desirable to be able to monitor various signals during the emulation process. In conventional emulators, however, certain signals are not available for monitoring because they are lost during the compilation process. The compiler takes a description of the design to be emulated and turns it into control instructions for the emulator. This process "reduces" certain groups of signals in the design. Reduced signals are not available for observation during the emulation process. What is needed is a way to let the user "see" reduced signals. Such a functions would enhance the user's ability to debug and test the circuit being emulated.
In addition, it is desirable to allow the user to set breakpoints and triggers during the emulation process. It is also desirable to allow the user to dump the contents of signals in the emulator to an external computer of workstation during emulation.